从老宋的角度看,自然语言处理领域如何学习?
作者:老宋的茶书会
知乎专栏:NLP与深度学习
研究方向:自然语言处理
前言
前段时间有朋友询问说NLP领域如何学习,然而一直忙于毕业论文中实在没有时间,两年半真的实在太难受了。昨天刚交了盲审,祈祷顺利毕业呀。
今天刚好有时间讲讲我自己的学习之路,然后谈谈我对自然语言处理领域学习的一些建议。
老宋:从迷茫到入坑
老宋本科在帝都某211,专业自动化,学的东西乱七八糟,因此翘课3年,挂科两门,侥幸毕业,实在不感兴趣。在本科期间,做过一年的嵌入式Linux,然后在大三之后转做Android,并花费半年之久考研(别问为啥考北科,问就是求稳)。说这些表达的意思是,老宋的基础还行,遗憾的是没有大牛带,一个人摸索的确难受,方向的不确定性也让人很迷茫。不过这也养成了我自学,自查,自己搞的习惯,这大学也没白读不是。
我个人觉得我在大学一个重要的收获就是,学会思考,坏处是经常会睡不着觉,乱七八糟一通思考。后来慢慢思考自己的路要怎么走,其实是一个不断探索的过程,中间自己不仅仅编程吧,其他经济学等方面也都有涉及,对吹牛逼大有益处。
到了研究生阶段,第一学期,懵懵懂懂学习机器学习基础知识,然后到第二学期,开始正式进入自然语言处理领域,开始打算做阅读理解方向的内容(事实证明,没有好老师指导,研究生想在阅读理解领域干点事情,基本不可能)。就这样,看论文,写代码,到了研二第二学期,开始找实习。刚开始,觉得刷题对算法岗不咋重要,然而,事实啪啪啪打我的脸,春招的笔试基本都挂,难受的一批。然后就是自己做的方向太窄了,阅读理解有没有商用,懂的面试官贼少,而你又没有顶会之类的硬货,因此,整个春招找实习算是很失败的。
总结下来就是两大原因:
忽略了刷题的重要性,搞得笔试根本过不去,bat连面试资格都没有,难受啊
方向太窄,阅读理解没面试官懂,且你没有硬货。
经过反思之后,我依旧没有把刷题放在首要任务上,这是秋招的一大败笔。
其实还有一点就是,看论文到底有没有用,我个人精读论文不下100,泛读的也不下200篇,可是面试官问不出来呀。很多同学都是看看BERT,Transformer,看看博客,刷刷面经就面过了(刷题需足够多),这也让我本身怀疑看论文的必要性,因为真的没有几个面试官能问出什么高水平的问题,基本就面经上常见的问题。
而今年算法岗还有一个有趣的现象:有的大厂面试官的水平不如应聘者,真实千奇百怪啊。
如何学习自然语言处理领域?
其实,我个人依旧认为学习自然语言处理领域的最好方式就是看论文,虽然今年不少人都是刷面经过的算法岗(有的在5月份连BERT都不知道),但从学习角度来说还是以论文为主,毕竟目前自然语言处理领域处于高速发展中。
如果我是面试官,我就从:你能不能谈谈最近预训练语言模型的发展 这一问题来评估应聘者的水平,要想说清楚这个发展历程,没有个精读10篇预训练语言模型论文是肯定不行的。而这一问题,也只有百度面试官问过,其他很多厂都是最多问问BERT,还有的大厂问各种数学计算公式,在我看来挺无聊的,背个公式这tm能体现出应聘者水平吗。这也从侧面验证百度技术还是厉害的。
因此,我这里并不介绍秋招准备的东西,而是日常学习中,自然语言处理你应该学习哪些东西,当然这是我按照我个人的学习推荐的,如果你要急于准备秋招,建议去牛客刷面经,对面试帮助极大。
如何入门自然语言处理?
首先,你要对自然语言处理领域有大致的了解,自然语言处理领域有哪些子任务,每个子任务都有哪些特点等。我个人认为这是你进入自然语言处理领域要做的第一件事情。
幸运的是,清华2018出了一篇报告讲述自然语言处理领域的现状,名为:《2018自然语言处理研究报告》。可以在文章结尾的百度云自己下载。
在进入自然语言领域之前,依旧需要你对机器学习以及深度学习有一定的基础,因此我个人推荐先学习这两大内容。机器学习对于自然语言处理来说相对并不重要,因此,可以简单过一遍即可。
我这里分别推荐书籍以及视频资料:
机器学习书籍:《PRML》
深度学习书籍:《Deep Learning》,看前几章就行
机器学习视频:白板推导系列
深度学习视频: 基础 - 吴恩达课程,深入 - 李宏毅老师视频
在这之后,你就应该学习自然语言处理领域的内容了,学习自然语言处理最好的方式是以点带面,从一个实际的上层应用出发,比如推荐,搜索,对话等。分析该上层应用中涉及到哪些自然语言处理方面的内容,然后针对性的学习。
就我个人来说,我依旧推荐文本分类作为入门的第一选择,因为文本分类在业界中应用的确最为广泛。我个人也有两个相关的仓库和文章:
文章模型:几个可作为Baseline的文本分类模型
基于词向量的模型:TextClassification-Pytorch
基于BERT的模型:Bert-TextClassification
由于NLP还在快速发展中,因此还没有那部书能够把内容以往打尽,因为书的周期太长,等出来后,技术都过时了。因此,对于自然语言处理领域来说,最重要的依旧是看论文,我之前写过一篇关于论文大礼包的,你把其中重要的文章看一遍基本就入门了,大概20多篇吧。
听说你急缺论文大礼包?(更新ing)
如何深入自然语言处理领域?
对于自然语言处理领域来说,有很多子任务,大多数人都是专注于有限几个领域。尤其是预训练语言模型诞生后,区别更不大了。在前面已经提到过了,那么你首先应该选择一个你感兴趣的上游任务,上游任务往往都比较复杂,融合了很多子任务。 举例来说:对于任务型对话来说,就涉及到文本分类,序列标注,文本匹配等任务。因此,你入门之后,还需要对应的学习多个子任务的内容。这里我推荐两个内容:
NLP-progress - 讲述nlp相关任务最新进展
中文相关进展 -- 中文nlp任务的数据集,论文,进展等
推荐几个知乎大佬
很多学生都是面向博客学习的 ,因此,我个人也推荐一波大佬:
张俊林
深度学习与NLP -- 量大,质量也不错
夕小瑶 -- 百度aig部NLP组大佬
刘知远 -- 清华副教授
呜呜哈 -- 对话做的比较深
习翔宇 -- 清华大佬,博士,起薪百万的那种
其他一些更新不勤快,但文章质量还不错的博主
吴海波 -- 蘑菇街推荐算法工程师
JayLou
香侬慧语科技
低级炼丹师
王喆 -- 清华大佬
Juliuszh -- 清华大佬
李如
AI talk -- 讲落地的一些东西
萧瑟 -- 阿里妈妈大佬
Tobias Lee
当你准备面试时
当你准备面试时,一方面是面经,一方面是基础知识。我个人基础还行,秋招期间维护了一个仓库来复习,后续有时间还会不断更新,可以star一下。
面试仓库:NLPer-Interview
最后
时间有限,码字不易,点赞支持,有钱打赏。
资料在这里
链接:pan.baidu.com/s/1dYFki5
提取码:10a5
额,考虑到有可能侵权问题,上面提到的一些其他资料大家还是自己去下载吧。
哦,对了,最近很多人私信我问问题,我就不回复了,咱也没义务不是。还有,千万别加我微信,我微信最近多了老多不认识的人,默默躺在通讯录里。
本文由作者授权AINLP原创发布于公众号平台,点击'阅读原文'直达原文链接,欢迎投稿,AI、NLP均可。
推荐阅读
ELECTRA: 超越BERT, 19年最佳NLP预训练模型
T5 模型:NLP Text-to-Text 预训练模型超大规模探索
BERT 瘦身之路:Distillation,Quantization,Pruning
关于AINLP
AINLP 是一个有趣有AI的自然语言处理社区,专注于 AI、NLP、机器学习、深度学习、推荐算法等相关技术的分享,主题包括文本摘要、智能问答、聊天机器人、机器翻译、自动生成、知识图谱、预训练模型、推荐系统、计算广告、招聘信息、求职经验分享等,欢迎关注!加技术交流群请添加AINLP君微信(id:AINLP2),备注工作/研究方向+加群目的。